package homeWork.day06;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
 * 将当前目录下的所有obj文件获取到，并进行
 * 反序列化后输出每个用户的信息(直接输出反序
 * 列化后的User对象即可)
 * @author Xiloer
 *
 */
public class Test02 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //创建File对象，表示当前目录(".")
        File dir = new File(".");
        //使用listFiles方法列出当前目录下所有以".obj"结尾的文件
        File[] subs = dir.listFiles((f)->f.getName().endsWith(".obj"));
        //遍历找到的所有.obj文件
        for(int i=0;i<subs.length;i++){
            //对于每个文件，创建一个FileInputStream对象用于读取文件内
            FileInputStream fis = new FileInputStream(subs[i]);
            // 基于FileInputStream创建ObjectInputStream对象，用于反序列化对象
            ObjectInputStream ois=new ObjectInputStream(fis);
            //从ObjectInputStream中读取一个对象
            Object obj = ois.readObject();

           if(obj instanceof User){
                //【在这里标注该句代码意义】
                User user = (User)obj;
                //【在这里标注该句代码意义】
                System.out.println(user);
           }
           ois.close();
        }

    }
}

/*
    提示代码:
	需要用到的语句，尝试按照正确顺序将下列代码并放在main方法中完成需求，
	并在注释中标注每句话的作用，
	//【在这里标注该句代码意义】
    File dir = new File(".");

    //【在这里标注该句代码意义】
    for(int i=0;i<subs.length;i++){

    }

    //【在这里标注该句代码意义】
    File[] subs = dir.listFiles((f)->f.getName().endsWith(".obj"));

    //【在这里标注该句代码意义】
    FileInputStream fis = new FileInputStream(sub);

    //【在这里标注该句代码意义】
    File sub = subs[i];//从数组中获取每一个obj文件

    //【在这里标注该句代码意义】
    System.out.println(user);

    //【在这里标注该句代码意义】
    ObjectInputStream ois = new ObjectInputStream(fis);

    //【在这里标注该句代码意义】
    User user = (User)obj;

    //【在这里标注该句代码意义】
    Object obj = ois.readObject();

    //【在这里标注该句代码意义】
    if(obj instanceof User){

    }

 */